package com.br.betelgeuse.bean;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.apache.log4j.Logger;
import org.primefaces.context.RequestContext;

import com.br.betelgeuse.controller.SelecaoCandidatosControle;
import com.br.betelgeuse.controller.SelecaoControle;
import com.br.betelgeuse.controller.impl.SelecaoCandidatosControleImpl;
import com.br.betelgeuse.controller.impl.SelecaoControleImpl;
import com.br.betelgeuse.model.Candidato;
import com.br.betelgeuse.model.Selecao;

@ManagedBean(name = "selecaoCandidatosBean")
@ViewScoped
public class SelecaoCandidatosBean {

	static Logger logger = Logger.getLogger(SelecaoCandidatosBean.class
			.getName());
	private List<Candidato> candidatosSelecionados;

	private SelecaoCandidatosControle selecaoCandidatosControle;
	private SelecaoControle selecaoControle;
	private Map<String, Integer> listaSelecao;
	private int selecao;

	public SelecaoCandidatosBean() {
		this.candidatosSelecionados = null;
		this.selecaoCandidatosControle = new SelecaoCandidatosControleImpl();
		this.selecaoControle = new SelecaoControleImpl();
		this.listaSelecao = new HashMap<String, Integer>();
	}

	public void listarSelecoes() {
		
		List<Selecao> selecoes = null;

		selecoes = this.selecaoControle.listarSelecao();

		for (Selecao selecaoTemp : selecoes) {		
			this.listaSelecao.put(selecaoTemp.getData().toString().substring(0, 4), selecaoTemp.getId());
		}

	}

	public void visualizarCandidatosSelecionados() {
		this.candidatosSelecionados = this.selecaoCandidatosControle
				.listarSelecaoCandidatos(this.selecao);
	}

	public void gerarSelecao() {
		int selecaoAtual = this.selecaoCandidatosControle
				.gerarSelecaoCandidatos();
		if(selecaoAtual != -1){
			this.candidatosSelecionados = this.selecaoCandidatosControle
					.listarSelecaoCandidatos(selecaoAtual);	
		} else{
			RequestContext.getCurrentInstance().execute("dialog.show();");
		}
		
		
	}

	public List<Candidato> getCandidatosSelecionados() {
		return this.candidatosSelecionados;
	}

	public SelecaoCandidatosControle getSelecaoCandidatosControle() {
		return selecaoCandidatosControle;
	}

	public void setSelecaoCandidatosControle(
			SelecaoCandidatosControle selecaoCandidatosControle) {
		this.selecaoCandidatosControle = selecaoCandidatosControle;
	}

	public SelecaoControle getSelecaoControle() {
		return selecaoControle;
	}

	public void setSelecaoControle(SelecaoControle selecaoControle) {
		this.selecaoControle = selecaoControle;
	}

	public Map<String, Integer> getListaSelecao() {
		return listaSelecao;
	}

	public void setListaSelecao(Map<String, Integer> listaSelecao) {
		this.listaSelecao = listaSelecao;
	}

	public int getSelecao() {
		return selecao;
	}

	public void setSelecao(int selecao) {
		this.selecao = selecao;
	}

	public void setCandidatosSelecionados(List<Candidato> candidatosSelecionados) {
		this.candidatosSelecionados = candidatosSelecionados;
	}

}
